Skip to content

release: promote develop to main (8debf013) — the runtime images stop shipping their build tree - #626

Merged
beyondnetPeru merged 6 commits into
mainfrom
release/promote-8debf013
Aug 19, 2026
Merged

release: promote develop to main (8debf013) — the runtime images stop shipping their build tree#626
beyondnetPeru merged 6 commits into
mainfrom
release/promote-8debf013

Conversation

@beyondnetPeru

Copy link
Copy Markdown
Contributor

Promotes develop to main. Six commits; two of them matter.

gap what landed
GT-692 (#625) All four deployable images stopped shipping their build tree and duplicating it: 8.34 GB → 3.71 GB total. This is the fix for the Tracker's Deploy (kind + Helm + smoke), which has been dying on no space left on device importing evolith-core-api.
GT-708 (#623, #624) Knowledge-First Discovery and the KDD concept retired from Core and Tracker — a governance concept that existed only in prose, in two repositories, while a real gate cited it as a precondition. ADR-0127 records it.
harness (#621, #622) Two dead paths in the deep-audit playbook: the schema scan pointed at a moved directory (Schemas: 0 over 50 files) and the SDLC scan at a doubled segment (Archivos SDLC: 0 over 174).

Why this promotion is the one that unblocks another repository

The image sizes are the point. Measured before and after, same tree and same day:

image before after
core-api 1.96 GB 862 MB
agent-runtime-api 2.49 GB 1.13 GB
mcp-server 1.89 GB 825 MB
cli 2.00 GB 890 MB

Half of the saving was not the dependency prune. RUN … chown -R was a 586 MB layer on core-api alone — a recursive chown rewrites every file into a new layer — and that cause was not in GT-692's original evidence. Ownership now travels on COPY --chown.

Every image was booted, not merely built, and that is what exposed mcp-server's Cannot find module 'keyv': a runtime dependency of @nestjs/cache-manager it never declared, surviving only because eslint hoisted a copy. The prune found the defect; it did not create it.

After this merges

A v* tag is what publishes the images to GHCR, so the Tracker keeps importing the 1.91 GB one until a tag is cut. That is the next step, and it closes GT-692's fourth criterion — re-running the consumer's job against the new image.

Board

677 / 706 done · 0 pending · 3 in progress · 26 deferred.

🤖 Generated with Claude Code

sync: carry the maturity-evidence refresh from main back into develop
…at moved (#621)

auditClientIngestion read `rulesets/schema`, a path that has not existed since rulesets/
moved under src/ (ADR-0048). exists() turned the moved directory into a silent zero, so
the audit reported ZERO client schemas over a directory holding 50.

Measured before and after on the same tree: Schemas 0 -> 50, the dimension's verdict
PARCIAL -> SÓLIDO, and the global score 8/9 -> 9/9 dimensiones SÓLIDO. The score was
wrong in the pessimistic direction.

Salvaged from a commit that lived only in a stale local main and was about to be
discarded. The narrative rewrite that travelled with it is deliberately not included —
that is a claim about the product, not a defect fix.
…oubled segment (#622)

auditSdlc read `reference/core/sdlc/sdlc` — a doubled segment. That path has never
existed; the SDLC surface is at reference/core/sdlc. exists() turned it into a silent
zero, so the dimension was scored over no files at all.

Measured before and after: Archivos SDLC 0 -> 174, datos estructurados 5 -> 7,
playbooks 0 -> 22.

Unlike #621 this moves no verdict: the dimension was already SÓLIDO on Fases 5/5 and
Gates 5/5, computed elsewhere. That is why it survived — the zero never hurt the score,
so an evidence line reading 'Archivos SDLC: 0' sat next to a green verdict. A wrong
number that costs nothing is the one nobody reports.

Left out on purpose, same function: '0 markdown fases' is still 0, because the filter
matches phase-0[1-5] while the files are phase-1, phase-1.1, phase-2, phase-3, phase-4.
Whether phase-1.1 counts as a phase is a question about the model, not about a regex.
… the Core (#623)

Advances GT-708 — the Tracker half is beyondnetcode/evolith_tracker#153.

Two things travelled under three letters and neither was ever built: Phase 1.1
(an optional subphase with its own readiness gate and seven artifact templates) and
KDD = Knowledge-Driven Development (an optional section INSIDE the PRD, per-tenant,
from the 2026-07-04 owner session). Owner decision: neither survives, in either repo.

Measured before deleting anything: five gates for phases 1..5; none of the seven KDD
artifacts among the 33 registered; zero TypeScript files; 31 CLI commands with zero
mentions (--phase discovery maps to phase 1 ENTIRE); zero in MCP; no Tracker screen or
entity; no KDD section in prd.schema.json.

The prose was load-bearing anyway: phase-1-business-signoff made 'Phase 1.1 adoption
level has been declared' a PRECONDITION for opening Gate 1, with 'a FAIL result blocks
this gate'. A gate nothing implements was blocking a gate everything implements.

16 files deleted, the Gate 1 precondition and its three KDD clauses removed, the
Subphase 01.1 tables and index rows removed, D-004/L-009 rewritten to what survives
them. ADR-0127 carries the retirement and AMENDS ADR-0103 rather than editing it.
CHANGELOG.md and ADR-0103 keep their KDD text on purpose.

Three pinned corpus counts move by one because the ADR itself owes a generated
conformance ruleset — the corpus grows by one rule nothing can run, to record the
removal of a concept nothing could run either.
…624)

The row was left IN-PROGRESS when the Core half merged, because one of its criteria was
the Tracker's REQ-DIS-12/REQ-DIS-13. That criterion is met by evolith_tracker#153
(97e1bc8e), so the row closes.

Both repositories had the same shape of teeth in different words: the Core made 'Phase
1.1 adoption level has been declared' a precondition for opening Gate 1, and the Tracker
gave REQ-DIS-13 the acceptance criterion 'a FAIL result blocks opening the Business
Sign-Off gate'. One non-existent gate, described twice, blocking on paper the only gate
every initiative must pass — while no ruleset, schema, CLI command, MCP tool, screen or
entity implemented it anywhere.

Board: 677 / 706 done, 0 pending.
…ted it on the way out (#625)

Advances GT-692 (DEFERRED -> IN-PROGRESS).

The Tracker's Deploy (kind + Helm + smoke) died importing evolith-core-api with
'no space left on device' on /repo/node_modules/get-intrinsic/CHANGELOG.md — the same
shape this row registered in July, still biting in another repository.

Two causes, and the second was not in the original evidence:

1. The runner received the build tree, compiler included. Fixed with
   'npm prune --omit=dev' at the end of every builder stage.
2. Found by reading docker history rather than the Dockerfile: 'RUN … chown -R' is a
   586 MB layer on core-api alone, a byte-for-byte duplicate of everything copied
   above it, because a recursive chown rewrites every file into a new layer.
   Ownership now travels on COPY --chown.

Measured before and after, same tree and same day: core-api 1.96 GB -> 862 MB,
agent-runtime-api 2.49 GB -> 1.13 GB, mcp-server 1.89 GB -> 825 MB, cli 2.00 GB ->
890 MB. Total 8.34 GB -> 3.71 GB.

Every image was BOOTED, not merely built — and that is what earned the second
finding: mcp-server first died with 'Cannot find module keyv', a runtime dependency
of @nestjs/cache-manager it never declared, surviving only because eslint hoisted a
copy. The prune exposed the defect; it did not create it.

70-validate-runtime-image-shape.mjs keeps both causes fixed and was observed red
against the previous Dockerfile, naming line 87.

Merged with the non-required 'Governance guards' job stuck ~26 min on an npm install
step — the same flakiness seen twice today. All 8 required checks are green.
@beyondnetPeru
beyondnetPeru requested a review from a team as a code owner August 19, 2026 16:12
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions

Copy link
Copy Markdown

📊 Bilingual Coverage Impact

PR Changes

  • Paired EN/ES files modified: 17
  • New EN files needing ES translation: 0

Repository Coverage

Metric Value
Total EN files 525
Total ES files 495
Paired files 0
Coverage 0%

Good: All EN changes have ES counterparts.


Generated by GitHub Actions

@beyondnetPeru
beyondnetPeru merged commit 0d1f844 into main Aug 19, 2026
84 of 86 checks passed
@beyondnetPeru
beyondnetPeru deleted the release/promote-8debf013 branch August 19, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant